package code.tools.number 
{
	/**
	 * 数字处理类
	 * @author CYang
	 * @date   2011-12-11 13:11
	 */
	public class NumberHandle 
	{
		/**
		 * 数字处理类构造函数
		 */
		public function NumberHandle() 
		{
			
		}
		
		/**
		 * 格式化时间
		 * @param	value 时间值
		 * @param	point 分隔符
		 * @param	zero 是否补0
		 * @param	ms 时间单位 秒(1):毫秒(1000)
		 * @return 格式化的时间
		 */
		public static function timeFormat(value:int, point:String = ":", zero:Boolean = true, ms:int = 1):String
		{
			if (value < 0) return "00" + point + "00" + point + "00";
			value /= ms;
			var _str:String;
			
			var _h:int = int(value / 3600);
			var _m:int = (value - _h * 3600) / 60;
			var _s:int = value % 60;
			
			if (!zero)
				_str = _h + point + _m + point + _s;
			else {
				_str = addZero(_h) + point;
				_str += addZero(_m) + point;
				_str += addZero(_s);
			}
			return _str;
		}
		//不足十位的时间补0
		private static function addZero(value:int):String
		{
			if (value < 10)
				return "0" + value;
			else
				return String(value);
		}
		
		/**
		 * 计算时间差
		 * @param	start 开始时间
		 * @param	end 结束时间
		 * @param	ms 秒值或者毫秒值
		 * @return
		 */
		public static function timeDelta(start:Number, end:Number, ms:int = 1):Number
		{
			return (end - start) / ms;
		}
		
		/**
		 * 检测是否同一天
		 * @param	current 当前日
		 * @param	goal 比较日
		 * @param	ms 秒值或者毫秒值
		 * @return
		 */
		public static function isSomeDay(current:Number, goal:Number, ms:int = 1):Boolean
		{
			var _dValue:Number = Math.abs(current - goal);
			return _dValue <= 86400 * ms;
		}
		
		/**
		 * 格式化数字 添加逗号(,)
		 * @param	value 分隔的数字
		 * @param	cutL 分隔长度
		 * @return 添加分隔符后的字符串
		 */
		public static function formatNumber(value:int, cutL:int = 4):String
		{
			var _str:String = String(value);
			var _len:int = _str.length;
			
			if (_len <= cutL) return _str;
			
			var _temp:String = "";
			
			for (var i:int = _len; i > 0; i -= cutL)
			{
				var _is:int = i > cutL?i - cutL:0;
				if(_is)
					_temp = "," + _str.slice(_is, i) +_temp;
				else
					_temp = _str.slice(_is, i) +_temp;
			}
			return _temp;
		}
	}

}